package cn.com.yusys.yusp.admin.repository.mapper;

import cn.com.yusys.yusp.admin.domain.AdminSmAuthReco;
import cn.com.yusys.yusp.admin.domain.AdminSmRole;
import cn.com.yusys.yusp.admin.domain.AdminSmUser;
import cn.com.yusys.yusp.commons.mapper.CommonMapper;
import cn.com.yusys.yusp.commons.mapper.QueryModel;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

public interface AdminSmRoleMapper extends CommonMapper<AdminSmRole> {

	/**
	 * 分页查询
	 * 
	 * @param QueryModel
	 * 
	 */
	List<Map<String, Object>> findAllByParam(QueryModel param);

	/**
	 * 查询角色信息
	 * 
	 * @param QueryModel
	 * */
	List<Map<String, Object>> findAllByRolests(QueryModel param);

	/**
	 * 
	 * @方法名称:deleteRole
	 * @方法描述:根据角色id删除角色
	 * @参数与返回说明:
	 * @算法描述:
	 */
	int deleteRole(@Param("did") String did);

	/**
	 * 
	 * @方法名称:deleteRole
	 * @方法描述:根据角色id删除角色
	 * @参数与返回说明:
	 * @算法描述:
	 */
	int queryRoleLevel(@Param("orgId") String orgId);

	/**
	 * 
	 * @方法名称:updateSts
	 * @方法描述:根据角色id启用角色
	 * @参数与返回说明:
	 * @算法描述:
	 */
	int updateSts(@Param("sts") String sts, @Param("id") String id,
                  @Param("userId") String userId, @Param("date") String date);

	/**
	 * 
	 * @方法名称:getUserListByModel
	 * @方法描述:查询用户
	 * @参数与返回说明:
	 * @算法描述:
	 */
	List<AdminSmUser> getUserListByModel(QueryModel model);

	/**
	 * 
	 * @方法名称:getRoleUser
	 * @方法描述:查询用户
	 * @参数与返回说明:
	 * @算法描述:
	 */
	List<Map<String, Object>> getRoleUser(QueryModel model);

	/**
	 * 
	 * @方法名称: createCheckrolecode
	 * @方法描述: 新增检查角色编号是否重复
	 * @参数与返回说明:
	 * @算法描述:
	 */
	int createCheckrolecode(@Param("roleCode") String roleCode);

	/**
	 * 
	 * @方法名称: editCheckrolecode
	 * @方法描述: 修改检查角色编号是否重复
	 * @参数与返回说明:
	 * @算法描述:
	 */
	int editCheckrolecode(@Param("roleCode") String roleCode,
                          @Param("roleId") String roleId);

	
	// 默认权限 begin add by chenlin
	/**
	 * 
	* @方法名称: getRoleAuthList
	* @方法描述: 查询默认权限
	* @参数与返回说明: 
	* @算法描述:
	 */
	List<AdminSmAuthReco> getRoleAuthList(QueryModel model);
	/**
	 * 
	* @方法名称: updateRoleAuth
	* @方法描述: 根据记录编号修改数据权限模板id
	* @参数与返回说明: 
	* @算法描述:
	 */
	int updateRoleAuth(Map<?, ?> param);
	/**
	 * 
	* @方法名称: updateAuthReco
	* @方法描述: 根据记录编号修改资源对象授权记录
	* @参数与返回说明: 
	* @算法描述:
	 */
	int updateAuthReco(Map<?, ?> param);
	/**
	 * 
	* @方法名称: cleanRoleAuth
	* @方法描述: 清除角色默认权限
	* @参数与返回说明: 
	* @算法描述:
	 */
	int cleanRoleAuth(@Param("authId") String authId);
	// 默认权限 end
	
	/**
	 * 
	* @方法名称: findAllByOrgIds
	* @方法描述: 根据多个机构查询角色
	* @参数与返回说明: 
	* @算法描述:
	 */
	List<Map<String,Object>> findAllByOrgIds(Map<String, List<String>> map);

    /**
     *
     * @方法名称: getUserByRoleId
     * @方法描述: 角色删除前查询是否被用户关联
     * @参数与返回说明:
     * @算法描述:
     */
	int getUserByRoleId(String roleId);
}
